package com.etl.dataflow.common.entity;

import com.etl.dataflow.common.enums.TaskStateEnum;
import lombok.Data;
import lombok.experimental.Accessors;

import java.util.Objects;

/**
 * @author dx
 */
@Data
@Accessors(chain = true)
public class TaskInfo {
    /**
     * 任务id
     */
    private String id;
    /**
     * 任务记录id
     */
    private String taskRecordId;
    /**
     * 任务参数
     */
    private TaskParam taskParam;
    /**
     * 任务状态
     */
    private TaskStateEnum state;
    /**
     * 任务所属执行器
     */
    private ExecutorInfo executorInfo;

    /**
     * 任务启动前拦截器 SpringBean 名称
     */
    private String taskLaunchInterceptorBeanName;
    /**
     * 读后拦截器 SpringBean 名称
     */
    private String afterReadInterceptorBeanName;
    /**
     * 写后拦截器 SpringBean 名称
     */
    private String afterWriteInterceptorBeanName;

    @Override
    public boolean equals(Object o) {
        if (this == o) {
            return true;
        }
        if (o == null || getClass() != o.getClass()) {
            return false;
        }
        TaskInfo taskInfo = (TaskInfo) o;
        return id.equals(taskInfo.id);
    }

    @Override
    public int hashCode() {
        return Objects.hash(id);
    }
}
